package com.itheima.service.imp;

import com.itheima.mapper.UserMapper;
import com.itheima.poko.PageQuery;
import com.itheima.poko.PageResult;
import com.itheima.poko.User;
import com.itheima.service.UserService;
import lombok.Builder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

//缺少验证,当前端传过来的页码是不合理的时候可以通过验证重新设置为合理的值,再把当前页传递回去
//若总记录数无法被每页显示数量整除，那么最后一页会显示剩余的记录。所以，需要额外增加一页来展示这些剩余记录。
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;


    @Override
    public PageResult page(PageQuery<User> pageQuery) {
//        查询总数量
//        此时pageQuery.getT()得到的将是用户传来的对应User类型的每个值
        long total = userMapper.count(pageQuery.getT());

//        分页查询
        List<User> list = userMapper.list(pageQuery);


        int pages = (int) (total%pageQuery.getPageSize()==0?total/ pageQuery.getPageSize():total/ pageQuery.getPageSize()+1);

         PageResult pageResult = PageResult.builder()
                 .currentPage(pageQuery.getPage())
                 .total(total)
                 .pages(pages)
                 .build();
//         集合数据
         pageResult.setData(list);
         return pageResult;


    }
}
